Embodiments of the present invention relate generally to routing of messages in a network and more particularly to providing customization to routing of messages in a system where routing is based on stored addresses.
Session Initiation Protocol (SIP) is an application-layer signaling protocol commonly used for establishing sessions over an Internet Protocol (IP) network. Such a session can be used for a variety of purposes such as Internet telephony, e.g., Voice over Internet Protocol (VoIP), audio and/or video conferencing, interactive gaming, etc. Generally speaking, SIP can be used by an initiating device to request a location of another device to be contacted or connected.
The major components of a SIP system include a proxy, a registrar, and a location server. Generally speaking, a SIP endpoint device can register a current location, i.e. network address or target SIP Uniform Resource Identifier (URI) where a SIP message targeted to a SIP identifier or Address Of Record (AOR) should be sent, with the location server via the registrar using the SIP REGISTER message. Another device attempting to contact the first device can request the first device's AOR from the system via the proxy that converts a SIP address (e.g. Address of Record (AOR)) to the target SIP URI(s) and routes the messages accordingly. This is done by having the proxy request the address from the location server and route the message for the requester to the target SIP UIR(s).
Such a system allows an initiating device to easily locate and contact another device for SIP interactions. However, since this protocol depends upon the stored addresses of the location server for a SIP identifier or AOR, it is rather limited and inflexible. That is, the SIP proxy can only route a SIP message to the target SIP URI stored in the location server. The location server and proxy cannot modify the target URI or provide alternatives (single or multiple, in parallel or in series) based on a set of conditions. Some system allow storing multiple target URIs for an AOR but these then have a hard coded behavior for the resulting routing, typically either routing to a first one or routing to all in parallel (i.e. SIP forking/Forking proxy). For example, the location server of a SIP system cannot select between multiple SIP URIs for a particular user based on preferences of that user or based on the user's presence or usage of one device. Rather, the location server is limited to simply providing the SIP URI saved during the registration step. Hence, there is a need for methods and systems that allow for customization of routing based on the saved SIP URI(s) and a set of one or more conditions or policies, i.e., in a programmable manner that can be executed at run-time and managed and/or set by authorized principals (users, administrators, etc).